home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
language
/
forth_83.zoo
/
tools.scr
< prev
next >
Wrap
Text File
|
1992-04-07
|
16KB
|
1 lines
\\ *** Tools *** 25may86we In diesem File sind die wichtigsten Debugging-Tools enthalten. Dazu gehören ein einfacher Decompiler, ein Speicherdump und der Tracer (s. Kapitel im Handbuch) Vor allem der Tracer hat sich als sehr sinnvolles Werkzeug bei der Fehlerbekämpfung entwickelt. Normalerweise sind Fehlerquel- len beim Tracen sofort auffindbar, manchmal allerdings auch nicht ganz so schnell ... \ Loadscreen for simple decompiler 26oct86we Onlyforth Vocabulary Tools Tools also definitions 1 5 +thru 6 +load \ Tracer Onlyforth \ Tools for decompiling 26oct86we | : ?: dup 4 u.r ." :" ; | : @? dup @ 6 u.r ; | : c? dup c@ 3 .r ; : s ( adr - adr+ ) ?: space c? 3 spaces dup 1+ over c@ type dup c@ + 1+ even ; : n ( adr - adr+2 ) ?: @? 2 spaces dup @ >name .name 2+ ; : k ( adr - adr+2 ) ?: 5 spaces @? 2+ ; : b ( adr - adr+1) ?: @? dup @ over + 5 u.r 2+ ; \ Tools for decompiling 26oct86we : d ( adr n - adr+n) 2dup swap ?: swap 0 DO c? 1+ LOOP 2 spaces -rot type ; : c ( adr - adr+1) 1 d ; \\ : dump ( adr n -) bounds ?DO cr I 10 d drop stop? IF LEAVE THEN 10 +LOOP ; \ dekompiliere String Name Konstant Char Branch Dump \ = = = = = = \ General Dump Utility - Output 26oct86we | : .2 ( n -- ) 0 <# # # #> type space ; | : .6 ( d -- ) <# # # # # # # #> type ; | : d.2 ( addr len -- ) bounds ?DO I c@ .2 LOOP ; | : emit. ( char -- ) $7F and dup bl $7E uwithin not IF drop Ascii . THEN emit ; | : dln ( addr --- ) cr dup 6 u.r 2 spaces 8 2dup d.2 space over + 8 d.2 space $10 bounds ?DO I c@ EMIT. LOOP ; | : ?.n ( n1 n2 -- n1 ) 2dup = IF ." \/" drop ELSE 2 .r THEN space ; | : ?.a ( n1 n2 -- n1 ) 2dup = IF ." v" drop ELSE 1 .r THEN ; \ Longdump basics 24aug86we | : ld.2 ( hiaddr loaddr len -- hiaddr ) bounds ?DO I over lc@ .2 LOOP ; | : ldln ( hiaddr loaddr -- ) cr dup >r over .6 2 spaces r@ 8 ld.2 space r@ 8 + 8 ld.2 space r> $10 bounds ?DO I over lc@ emit. LOOP drop ; | : .head ( addr len -- addr' len' ) swap dup -$10 and swap $0F and cr 8 spaces 8 0 DO I ?.n LOOP space $10 8 DO I ?.n LOOP space $10 0 DO I ?.a LOOP rot + ; \ Dump and Fill Memory Utility 10sep86we Forth definitions : ldump ( laddr len -- ) base push hex >r swap r> .head bounds ?DO dup I ldln stop? IF LEAVE THEN I $FFF0 = IF 1+ THEN $10 +LOOP drop ; : dump ( addr len -- ) base push hex .head bounds ?DO I dln stop? IF LEAVE THEN $10 +LOOP ; \ Trace Loadscreen 26oct86we Onlyforth \needs Tools Vocabulary Tools Tools also definitions \needs cpush 1 +load \needs >absaddr : >absaddr 0 forthstart d+ ; 2 8 +thru Onlyforth